// 代理模式
/**
 * 虚拟代理
 * 缓存代理
 * 防火墙代理
 * 远程代理
 * 保护代理
 * 
 */

var Flower = function () {}

var Xiaoming = {
    sendFlower : function (target) {
        var flower = new Flower();
        target.receiveFlower(flower);
    }
}

var B = {
    receiveFlower : function (flower) {
        A.listenGoodMood(function(){  //监听 A 的好心情
            A.receiveFlower( flower )
        })
    }
}

var A= {
    receiveFlower : function (flower) {
        console.log('收到花' + flower);
    },
    listenGoodMood : function(fn){
        setTimeout(() => {
            fn()
        }, 10000);
    }
}
Xiaoming.sendFlower(B)


//延申  虚拟代理

//-- 对xiaoming友好型  比如 new Flower 的开销很大 可以让B去完成   等到真正要执行的时候再去做
//-- 对A友好 过滤掉一些 对A不友好的请求
